package model

import (
	"time"

	"gorm.io/gorm"
)

// Salary 薪资模型
// 用于管理员工的薪资信息，包括基本工资、奖金、补贴等各项收入，以及个税、社保等扣除项
// 通过UserID关联到User模型，实现薪资记录的精确管理和追踪
type Salary struct {
	ID        uint           `gorm:"primarykey" json:"id"` // 主键ID
	CreatedAt time.Time      `json:"created_at"`           // 创建时间
	UpdatedAt time.Time      `json:"updated_at"`           // 更新时间
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`       // 软删除时间

	UserID      uint      `gorm:"not null;index" json:"user_id"`    // 关联用户ID，用于关联用户表
	Year        int       `gorm:"not null" json:"year"`             // 年份，如2023
	Month       int       `gorm:"not null" json:"month"`            // 月份，1-12
	BaseSalary  float64   `gorm:"not null" json:"base_salary"`      // 基本工资，单位为元
	Bonus       float64   `json:"bonus"`                            // 奖金金额，可为空
	Overtime    float64   `json:"overtime"`                         // 加班费金额，可为空
	Allowance   float64   `json:"allowance"`                        // 补贴金额，可为空
	Deduction   float64   `json:"deduction"`                        // 扣除金额，可为空
	Tax         float64   `json:"tax"`                              // 个人所得税金额，可为空
	Insurance   float64   `json:"insurance"`                        // 社会保险金额，可为空
	Fund        float64   `json:"fund"`                             // 公积金金额，可为空
	NetSalary   float64   `gorm:"not null" json:"net_salary"`       // 实发工资，单位为元
	PaymentDate time.Time `json:"payment_date"`                     // 发放日期，记录工资发放时间
	Status      int       `gorm:"not null;default:0" json:"status"` // 状态：0-未发放，1-已发放
	Remark      string    `gorm:"size:500" json:"remark"`           // 备注信息，最大长度500

	User User `gorm:"foreignKey:UserID" json:"user"` // 关联用户信息
}
